今天我們將首次使用到firebase,那firebase是啥呢?
firebase本身提供許多服務:hosting、functions、firestore、realtime daatabase...。
為您的網站提供託管或部屬程式於雲端執行。
其為Firebase,Inc.在2011年發布的行動和網路應用程式開發者平台,後來被Google收購(因此若您於GCP 平台也能使用)
第一步,先於GCP平台註冊,若您是學生還有免費的額度
影片參考:https://www.youtube.com/watch?v=f90rxk7YlUU
接著我們可於firebase
https://firebase.google.com/
建立專案
接下來我們可以先建立firestore,以前firestore與realtime database放在同區域容易搞混,但最近firebase網站已經將其分開。
在其官方文件敘述:
Cloud Firestore是一種基於文檔的NoSQL數據庫。與SQL數據庫不同的是,它沒有表格或行的概念,而是將數據存儲在文檔中,將文檔組織為集合。
Cloud Firestore經過優化,可用於存儲小型文檔的大型集合。
所有文檔必須存儲在集合中。文檔可以包含子集合和嵌套對象,其中都可以包括原始細分(如字符串)或複雜對象(如列表)。
這邊我們選擇建立並使用正式版模式
由於之後會進入寫入資料,因此我們點擊進入規則頁面,改為 allow read,write :if false;
之後建立如下
再點擊左上小齒輪,專案設定=>服務帳戶
複製admin sdk 至googleHomeService.js
// const http = require('http')
const googleHome = require('google-home-push');
const config = require('./config')
const language = "zh-TW"
const accent = "zh-TW"
//---------here------------
var admin = require("firebase-admin");
var serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential:
databaseURL:
});
//---------------------
const options = {
language: language,
accent: accent
}
const myHome = new googleHome(config.moudule[0].ip,options)
//非同步取得firestore資料並推播
async function getData(){
let data =await admin.firestore().collection("itHelp").get()
data.forEach((doc) => {
console.log(doc.id, '=>', doc.data());
myHome.speak(doc.data().notifyMessage);
console.log(doc.data().notifyMessage)
});
}
getData()
firestore 我們即可簡單利用其進行推播